package com.eduplatform.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.eduplatform.dto.PPTDTO;
import com.eduplatform.entity.PPT;

import java.util.List;

/**
 * PPT课件服务接口
 */
public interface PPTService extends IService<PPT> {

    /**
     * 分页查询PPT课件列表
     * 
     * @param page           页码
     * @param size           每页大小
     * @param keyword        关键字
     * @param subjectId      学科ID
     * @param educationLevel 教育阶段
     * @param schoolId       学校ID
     * @return 分页结果
     */
    Page<PPTDTO> listPPTs(int page, int size, String keyword, Long subjectId, Integer educationLevel,
            Long schoolId);

    /**
     * 获取PPT课件详情
     * 
     * @param id PPT课件ID
     * @return PPT课件详情
     */
    PPTDTO getPPTById(Long id);

    /**
     * 添加PPT课件
     * 
     * @param pptDTO PPT课件DTO
     * @return 是否成功
     */
    boolean addPPT(PPTDTO pptDTO);

    /**
     * 更新PPT课件
     * 
     * @param pptDTO PPT课件DTO
     * @return 是否成功
     */
    boolean updatePPT(PPTDTO pptDTO);

    /**
     * 删除PPT课件
     * 
     * @param id PPT课件ID
     * @return 是否成功
     */
    boolean deletePPT(Long id);

    /**
     * 获取热门PPT课件
     * 
     * @param limit 数量限制
     * @return 热门PPT课件列表
     */
    List<PPTDTO> getHotPPTs(int limit);

    /**
     * 获取最新PPT课件
     * 
     * @param limit 数量限制
     * @return 最新PPT课件列表
     */
    List<PPTDTO> getLatestPPTs(int limit);

    /**
     * 记录PPT课件查看
     * 
     * @param id PPT课件ID
     * @return 是否成功
     */
    boolean viewPPT(Long id);

    /**
     * 记录PPT课件下载
     * 
     * @param id PPT课件ID
     * @return 是否成功
     */
    boolean downloadPPT(Long id);
}